/*题目：
 * 小明家有一个万能遥控器，能够支持多个品牌的电视。
   每个电视可以执行开机、关机和切换频道的操作，请你使用桥接模式模拟这个操作。
 * 输入：第一行是一个整数 N（1 <= N <= 100），表示后面有 N 行输入。
        接下来的 N 行，每行包含两个数字。第一个数字表示创建某个品牌的遥控和电视，第二个数字表示执行的操作。
        其中，0 表示创建 Sony 品牌的电视，1 表示创建 TCL 品牌的遥控和电视；
        2 表示开启电视、3表示关闭电视，4表示切换频道。
 * 输出：对于每个操作，输出相应的执行结果。
 * 示例：
 *      输入：6
             0 2
             1 2
             0 4
             0 3
             1 4
             1 3
        输出：Sony TV is ON
             TCL TV is ON
             Switching Sony TV channel
             Sony TV is OFF
             Switching TCL TV channel
             TCL TV is OFF
 * */

#include <iostream>
#include <sstream>
using namespace std;
class TV{
public:
    virtual void turnOn()=0;
    virtual void turnOff()=0;
    virtual void switchChannel()=0;
};
class SonyTV:public TV{
public:
    void turnOn() override{
        cout<<"SonyTV turn on"<<endl;
    }
    void turnOff() override{
        cout<<"SonyTV turn off"<<endl;
    }
    void switchChannel() override{
        cout<<"switching SonyTV"<<endl;
    }
};
class TclTV:public TV{
public:
    void turnOn() override{
        cout<<"TclTV turn on"<<endl;
    }
    void turnOff() override{
        cout<<"TclTV turn off"<<endl;
    }
    void switchChannel() override{
        cout<<"switching TclTV"<<endl;
    }
};
class RemoteControl{
protected:
    TV* tv;
public:
    RemoteControl(TV* tv):tv(tv){}
    virtual void perform()=0;
};
class OnOperation:public RemoteControl{
public:
    OnOperation(TV* tv): RemoteControl(tv){}
    void perform() override{
        tv->turnOn();
    }
};
class OffOperation:public RemoteControl{
public:
    OffOperation(TV* tv): RemoteControl(tv){}
    void perform() override{
        tv->turnOff();
    }
};
class SwitchOperation:public RemoteControl{
public:
    SwitchOperation(TV* tv): RemoteControl(tv){}
    void perform() override{
        tv->switchChannel();
    }
};
int main() {
    int num=0;
    cin>>num;

    //忽略（丢弃）输入流中直到下一个换行符之前的所有字符
    cin.ignore();

    for (int i = 0; i < num; ++i) {
        string input;
        getline(cin,input);

        //创建了一个istringstream对象iss，它是一个输入字符串流，可以将字符串视为输入流，方便后续的读取操作。
        istringstream iss(input);

        int brand,operation;

        //使用>>操作符从iss输入流中读取两个整数，分别存储到变量brand和operation中
        iss>>brand>>operation;

        TV* tv;
        if (brand==0){
            tv=new SonyTV();
        }else{
            tv=new TclTV();
        }

        RemoteControl* remoteControl;
        if (operation==2){
            remoteControl=new OnOperation(tv);
        }else if(operation==3){
            remoteControl=new OffOperation(tv);
        }else{
            remoteControl=new SwitchOperation(tv);
        }

        remoteControl->perform();

        delete tv;
        delete remoteControl;
    }

    return 0;
}